package leetcode.Y2024M7;

import org.junit.Test;

import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Deque;
import java.util.List;

public class S46 {
    static List<List<Integer>> res = new ArrayList<>();

    static List<Integer> numList = new ArrayList<>();

    public List<List<Integer>> permute(int[] nums) {
        if (nums.length == 0) return res;
        for (int num : nums) {
            numList.add(num);
        }
        dfs(0);
        return res;

    }

    private void dfs(int x) {
        if (x == numList.size() - 1) {
            res.add(new ArrayList<>(numList));
            return;
        }
        for (int i = x; i < numList.size(); i++) {
            change(i, x);
            dfs(x + 1);
            change(i, x);
        }
    }

    private void change(int x, int y) {
        int tmp = numList.get(x);
        numList.set(x, numList.get(y));
        numList.set(y, tmp);
    }

//    @Test
//    public void test() {
//        int[] nums = {1};
//        System.out.println(permute(nums));
//    }
}
